package com.ruge.user.service;

import com.ruge.core.enums.IntegralEnum;
import com.ruge.core.response.Response;

/**
 * @author ruge.wu
 * @since 2022/2/11 11:03
 */
public interface IntegralLogService {
    /**
     * 新增积分
     *
     * @param aid          aid
     * @param integralEnum {@link IntegralEnum}
     * @return {@link Response}
     */
    Response save(Long aid, IntegralEnum integralEnum);

    /**
     * 积分规则 初始化至mysql
     *
     * @return {@link Response}
     */
    Response initRule();

    /**
     * 获取前x名积分排行
     *
     * @param top x名
     * @return {@link Response}
     */
    Response getTop(Integer top);

    /**
     * 获取前x名积分排行
     *
     * @param top x名
     * @return {@link Response}
     */
    Response getTopFromRedis(Integer top);

    /**
     * 获取指定aid的排行
     *
     * @param aid aid
     * @return {@link Response}
     */
    Response getRankByAid(Long aid);

    /**
     * 获取指定aid的排行
     *
     * @param aid aid
     * @return {@link Response}
     */
    Response getRankByAidFromRedis(Long aid);
}
